package com.softeem.yqst_server.controller;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.softeem.yqst_server.dto.Result;
import com.softeem.yqst_server.entity.Admin;
import com.softeem.yqst_server.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/admin")  //命名空间(namespace)
@RestController
public class AdminController {

    @Autowired
    private AdminService adminService;

    /**
     * 实现管理员登录功能。该方法接收管理员的用户名和密码作为输入，验证其正确性。
     * 如果用户名和密码匹配，则返回"success"，否则返回"fail"。
     *
     * @param username 管理员账号的用户名。
     * @param password 对应于用户名的密码。
     * @return 返回字符串类型，表示登录结果。"success" 表示登录成功，"fail" 表示登录失败。
     */
    @RequestMapping("/login")
    public Result login(String username, String password) {
        // 通过用户名查询数据库中是否存在对应的管理员信息
        Admin admin = adminService.getOne(Wrappers.<Admin>lambdaQuery().eq(Admin::getUsername, username));
        if (admin != null && admin.getPassword().equals(password)) {
            if(admin.getStatus() != 0){
                return Result.fail().setMsg("该账号已被禁用");
            }
            // 如果用户名和密码都匹配，则登录成功
            return Result.ok().setMsg("登录成功").setData(admin);
        }
        // 用户名或密码不匹配，登录失败
        return Result.fail().setMsg("账号或密码错误");
    }


    /**
     * 实现管理员注册接口。该方法接收一个用户名和密码，检查该用户名是否已存在。
     * 如果不存在，则创建一个新的管理员账号并保存。
     *
     * @param username 管理员用户名
     * @param password 管理员密码
     * @return 返回字符串 "success" 表示注册成功，"fail" 表示注册失败（用户名已存在）
     */
    @RequestMapping("/register")
    public Result register(String username, String password) {
        // 通过用户名查询是否存在该管理员账号
        Admin admin = adminService.getOne(Wrappers.<Admin>lambdaQuery().eq(Admin::getUsername, username));
        if (admin == null) {
            // 如果管理员账号不存在，则创建新账号并保存
            admin = new Admin();
            admin.setUsername(username);
            admin.setPassword(password);
            adminService.save(admin);
            return Result.ok().setMsg("添加成功").setData(admin);
        }
        // 如果管理员账号已存在，则返回注册失败
        return Result.fail().setMsg("该账号已存在");
    }


}
